# !/usr/bin python3                                 
# encoding: utf-8 -*-                            
# @author:   夭夭 QQ：3512937625
# @Time:   2021-06-28
# @Copyright：北京码同学网络科技有限公司

# hook函数f
import jsonpath
import pytest

from api.base_api import BuyerBaseApi, SellerBaseApi
from api.buyer.login_api import BuyerLoginApi
from api.seller.login_api import SellerLoginApi


def pytest_collection_modifyitems(items):
    # item表示每个测试用例，解决用例名称中文显示问题
    for item in items:
       item.name = item.name.encode("utf-8").decode("unicode-escape")
       item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")


'''
firxture函数可以实现setup的功能，在测试用例之前执行内容。
功能更强大，可以随便取名字
@pytest.fixture(scope='class' ,autouse=False)
autouse=False  默认false，True 自动引用
session：pytest发起请求到结束，只会执行一次。
funtion：函数级别的用例和方法的测试用例，都用这个范围
class ：引用fixture函数的class，就会执行一次。
module:引用fixture函数的python文件，就会执行一次。
引用：
把fixture 
'''
'''
fixture方法的调用方法，全局都有用了，执行时候会做全局检索。
'''
@pytest.fixture(scope='function',autouse=True )
# @pytest.fixture()
def buyer_login():

    # 依赖登录接口，
    buyerlogapi = BuyerLoginApi()
    # 发起请求
    resp = buyerlogapi.send()
    # 生成token
    print("########## 设置token值")
    BuyerBaseApi.buyer_token = jsonpath.jsonpath(resp.json(), '$.access_token')[0]  # jsonpath要练习
    # BuyerBaseApi.buyer_token = buyerlogapi.extract_expr( '$.access_token') # jsonpath要练习

# 参数化7次，setup_method基本
    print('++buer_login++')

@pytest.fixture(scope='function',autouse=True )
def seller_login():
    sellerloginapi = SellerLoginApi()
    sellerloginapi.send()
    # 数据提取
    SellerBaseApi.seller_token = sellerloginapi.extract_expr('$.access_token')


#test